package Utils.demo3;

import java.util.concurrent.Callable;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;

/**
 * @author: Laity
 * @Project: JavaLaity
 * @Package: Utils.demo3.Demo
 * @Date: 2022年11月20日 18:39
 * @Description: 响应式编程
 */
public class Demo {
    static int a = 10;
    static int b = 20;
    public static void main(String[] args) throws InterruptedException {

        CountDownLatch latch = new CountDownLatch(1);  // 倒计数的内容为1

//        int a = 10;
//        int b = 20;
        System.out.printf("【第一次计算】数学加法计算：%d%n", (a + b));

        new Thread(() -> {
            try {
                Thread.sleep(1);
                b = 50;
                latch.countDown(); // 减一的操作
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }, "数据修改线程").start();
        latch.await();  // 等待计数为0
        System.out.printf("【第二次计算】数学加法计算：%d%n", (a + b));
//        Callable<Integer> callable = new Callable<Integer>() {
//            @Override
//            public Integer call() throws Exception {
//                Thread.sleep(200);
//                TimeUnit.SECONDS.sleep(2);  // 休眠2秒的时间
//                return null;
//            }
//        };
        /**
         * 结果：
         *  【第一次计算】数学加法计算：30
         *  【第二次计算】数学加法计算：60
         */
    }
}
